Various systems need to calculate relative popularity and/or relevance according to sequences of events that occur throughout time over a population of entities to which these events are assigned. In general scores (or weights) are assigned to distinct events, and the scores accumulate over time to derive a net score for an entity. The accumulated net scores can be used to determine the relative popularity and/or relevance of the scored entities.
For example, an information processing system may track a collection of news stories (entities). In this example, scoring events may consist of users selecting headlines to read, rating the quality of the news story based on interestingness and/or relevance, and/or recommending the news story to others. Each scoring event can be assigned a weighted score (e.g., selecting a story to read can have a score of 1.0, while recommending the story to another may have a score of 3.0). If each event is assigned a numerical score, the entities accumulate a net score based on all past scoring events.
One problem with simply adding up all event scores is that the element of time is not taken into account. A news story may exist in the system for a period of days, months, or years. A story (entity) that was interesting or “news” today ceases to be so tomorrow. Thus, it may be desirable to adjust the event scores such that recent events are weighted more highly than past events.
One approach is to simply add up accumulated event scores, but to periodically “depreciate” the accumulated scores stored at specified time intervals. For example, once per day, a system might discount all scores such that scores recorded the next day would weight more heavily than past events. However, this approach requires the information system to read and modify each score each day, an approach that may be quite computationally expensive for large systems. In some cases, a system can mitigate this disadvantage to some extent by deleting or expiring older entities from the system. However, such systems cannot track surges in popularity that occur after the expiration date of an entity.
Another approach is to keep a record of all recent scoring events, ordered by time. Periodically (e.g., nightly), net scores can be recalculated based on accumulating just the scores from the most recent time interval. However, it may also be computationally expensive to process all scoring events (or even a summary of recent scoring events) until the event information can be discarded or ignored (after a system-defined maximum age).